抢占模式下,每个systick 都会去判断有没有高优先级任务就绪,时间片是时间片

🔍 溯源 ✍️ Jack | 📅 2024-09-27 | 👍 0 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/FreeRTOS #技术/任务调度 #质量/普通

原帖 | Jack | 2024-09-27 15:58 | 👍0 | 阅读约1

抢占模式下,每个systick 都会去判断有没有高优先级任务就绪,时间片是时间片,systick是systick。

在FreeRTOS中,时间片和Systick是两个不同的概念,它们在任务调度中扮演不同的角色:
时间片(Time Slice):
定义:时间片是指同一优先级下可以有多个任务,每个任务轮流地享有相同的CPU时间。在FreeRTOS中,时间片固定为一个tick,即Systick的中断周期。
任务调度:当有多个任务处于就绪态且优先级相同时,系统会在每个tick轮询地执行这些任务。如果一个任务的延时时间到了,它会被放到就绪列表的头部,等待下一个tick执行。
Systick:
功能:Systick是一个定时器,用于产生定时中断,这些中断用于任务调度和延时任务的检查。
中断服务函数:在Systick中断服务函数中,如果调度器返回true,会触发PendSV异常。这个异常用于任务切换,并且通过改变进程栈指针(PSP)来切换到不同的任务。
心跳时钟:Systick作为FreeRTOS的心跳时钟,一般默认心跳时钟为1ms。系统在Systick中断中进行上下文切换。
配置:Systick的配置包括时钟源、中断频率等,这些配置在初始化时进行。
总结来说,时间片是FreeRTOS中用于同一优先级下多个任务轮流执行的概念,而Systick是一个核心定时器,用于产生定时中断,用于任务调度和延时任务的检查。


相关笔记